package com.sas.until;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import org.springframework.http.HttpStatus;  
import org.springframework.web.method.HandlerMethod;   
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import java.io.PrintWriter;  
import java.util.Set; 
/**
 *
 *2017-11-20
 *胡其安
 *自定义权限控制
 *Spring拦截器
 *
 */
public class AuthInterceptor extends HandlerInterceptorAdapter{
	
	
	    //在进入Handler方法之前执行了，使用于身份认证，身份授权，登陆校验等，比如身份认证，用户没有登陆，拦截不再向下执行，返回值为 false ，即可实现拦截；否则，返回true时，拦截不进行执行；
	    @Override  
	    public boolean preHandle(HttpServletRequest request,  
	            HttpServletResponse response, Object handler) throws Exception {  
	      
	            	Object attribute = request.getSession().getAttribute("user");
	            	
	            	String uri = request.getRequestURI();  
	            	System.out.println("进入拦截器"+attribute+uri);
	            	if("/test_1/user.do".equals(uri)){
	            		  //放行
	            		 return true;
	            	}
	            	else if (attribute != null) {//   
	                	  //登陆成功的用户  
	                     return true; 
	                } else { 
	                	 //没有登陆，转向登陆界面  
	                     request.getRequestDispatcher("/login.jsp").forward(request,response);  
	                     return false; 
	                     }  
	            
	          
	       
	    }  
	    //进入Handler方法之后，返回ModelAndView之前执行，使用场景从ModelAndView参数出发，比如，将公用的模型数据在这里传入到视图，也可以统一指定显示的视图等；
	    @Override  
	    public void afterCompletion(HttpServletRequest arg0,  
	            HttpServletResponse arg1, Object arg2, Exception arg3)  
	            throws Exception {  
	    }  
	   // 在执行Handler完成后执行此方法，使用于统一的异常处理，统一的日志处理等；
	    @Override  
	    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,  
	            Object arg2, ModelAndView arg3) throws Exception {  
	    } 
}
